package com.sayimo.maker.mall.orders.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.sayimo.framework.exception.DaoException;
import com.sayimo.maker.mall.orders.vo.OrdersList;



/**
 * @Copyright (c) 2016 广东省尚一互联网有限公司
 * @Project: schoolmallapi
 * @ClassName: OrdersListInterfaceDao
 * @Description: 商品订单Dao
 * @Author: 王瑞清
 * @Date: 日期：2016年1月4日 时间：下午5:24:52
 * @Version 1.0.0
 */
public interface OrdersListInterfaceDao {

	/**
	 * @Title: insertOrder
	 * @Author: 王瑞清
	 * @Date:日期：2016年1月4日 时间：下午3:48:03
	 * @Description: 生成订单
	 * @param ordersList
	 * @throws DaoException
	 * @return Integer
	 * @Version 1.0.0
	 */
	public Integer insertOrderList(OrdersList ordersList) throws DaoException;

	/**
	 * @Title: queryOrderByOrdersNo
	 * @Author: 王瑞清
	 * @Date:日期：2016年1月4日 时间：下午5:21:45
	 * @Description: 按订单编号查询
	 * @param ordersNo
	 * @throws DaoException
	 * @return Integer
	 * @Version 1.0.0
	 */
	public Integer queryOrderByOrdersNoCount(String ordersNo) throws DaoException;
	
	/**
	 * 
	* @Title: getBatchCodeByCustomerId 
	* @Description: 查询用户订单批次号
	* @param customerId
	* @param status
	* @return
	* @throws DaoException
	* @return List
	* @throws
	 */
	public List getBatchCodeByCustomerId(Integer customerId,Integer status)throws DaoException;
	
	/**
	 * 
	* @Title: getOrderListByBatchCode 
	* @Description: 根据批次号查询  该批次下订单列表
	* @param batchCode
	* @return
	* @throws DaoException
	* @return List
	* @throws
	 */
	public List getOrderListByBatchCode(String batchCode,Integer status)throws DaoException;
	
	/**
	 * 
	* @Title: getOrderListByCustomerId 
	* @Description: 查询用户 订单列表
	* @param customerId
	* @param status
	* @return
	* @throws DaoException
	* @return List
	* @throws
	 */
	public List getOrderListByCustomerId(Integer customerId,Integer status, Integer pageSize, Integer pageNow,Integer mallType)throws DaoException;
	
	
	
	
	/**
	 * @Title: queryMemberCustomerOrderList
	 * @Author: 曹频辉
	 * @Date:日期：2016年1月6日 时间：上午10:50:45
	 * @Description: 根据用户ID查询订单列表
	 * @param customerId
	 * @param status
	 * @throws DaoException
	 * @return List
	 * @Version 1.0.0
	 */
	public List queryMemberCustomerOrderList(Integer  customerId,Integer status) throws DaoException;
	
	
	public List queryCustomerOrderList(Integer  customerId,Integer goodsId,String identifier) throws DaoException;
	/**
	 * @Title: queryMemberCustomerOrderList
	 * @Author: 曹频辉
	 * @Date:日期：2016年1月6日 时间：上午11:20:45
	 * @Description: 根据订单Id查询商品列表
	 * @param ordersId
	 * @throws DaoException
	 * @return List
	 * @Version 1.0.0
	 */
	public List getGoodsListByOrdersId(Integer  ordersId) throws DaoException;
	
	
	/** 
	* @Title: queryOrderDetailsById 
	* @Author: 王瑞清
	* @Date:日期：2016年1月7日  时间：下午5:49:10
	* @Description: 订单详情
	* @param id
	* @throws DaoException
	* @return OrdersList
	* @Version 1.0.0
	*/ 
	public Integer queryOrdersListTotal(List<Integer> ids) throws DaoException;
	
	/**
	 * 
	 * @MethodName queryOrdersByBatchCode
	 * @Description 按订单收货地址批次号查询订单信息
	 * 
	 * @author chenpy
	 * @date 2016年1月8日 下午3:57:59
	 * @param 
	 * @return List<OrdersList>
	 * @VERSION 1.0.0
	 */
	public List<OrdersList> queryOrdersByBatchCode(String batchCode) throws DaoException;
	
	/**
	 * @Title: batchUpdateOrdersList
	 * @Author: chenpy
	 * @Date:日期：2016年1月8日 时间：下午4:05:03
	 * @Description: 生成订单
	 * @param list
	 * @throws DaoException
	 * @return Integer
	 * @Version 1.0.0
	 */
	public Integer batchUpdateOrdersList(List<OrdersList> list) throws DaoException;
	
	
	/** 
	* @Title: queryOrdersTotalMoneyByIds 
	* @Author: 王瑞清
	* @Date:日期：2016年1月9日  时间：下午6:03:26
	* @Description: 订单价格合计
	* @param ids
	* @throws DaoException
	* @return Map<String,Object>
	* @Version 1.0.0
	*/ 
	public Map<String, Object> queryOrdersTotalMoneyByIds(List<Integer> ids) throws DaoException;
	
	
	/** 
	* @Title: updateOrdertotalAmountById 
	* @Author: 王瑞清
	* @Date:日期：2016年1月11日  时间：下午5:15:25
	* @Description: 更新订单金额
	* @throws DaoException
	* @return void
	* @Version 1.0.0
	*/ 
	public void updateOrdertotalAmountById(Integer id) throws DaoException;
	
	/** 
	* @Title: queryOrdersListById 
	* @Author: 王瑞清
	* @Date:日期：2016年1月12日  时间：下午3:39:02
	* @Description: 按ID查询
	* @param id
	* @throws DaoException
	* @return OrdersList
	* @Version 1.0.0
	*/ 
	public OrdersList queryOrdersListById(Integer id) throws DaoException;
	
	/**
	 * 
	 * @MethodName updateOrdersList
	 * @Description 修改订单
	 * 
	 * @author chenpy
	 * @date 2016年1月13日 下午2:06:47
	 * @param 
	 * @return Integer
	 * @VERSION 1.0.0
	 */
	public Integer updateOrdersList(OrdersList list) throws DaoException;
	
	/** 
	* @Title: updateOrdersListStatus 
	* @Author: 王瑞清
	* @Date:日期：2016年1月13日  时间：上午11:51:37
	* @Description: 更新状态
	* @param pm
	* @throws DaoException
	* @return Integer
	* @Version 1.0.0
	*/ 
	public Integer updateOrdersListStatus(Map<String, Object> pm) throws DaoException;
	
	/** 
	* @Title: queryOrdersByIds 
	* @Author: 王瑞清
	* @Date:日期：2016年2月25日  时间：下午3:04:45
	* @Description: 订单详情按ID集合查询 
	* @param ids
	* @throws DaoException
	* @return List<OrdersList>
	* @Version 1.0.0
	*/ 
	public List<OrdersList> queryOrdersByIds(List<Integer> ids) throws DaoException;
	
	
	/** 
	* @Title: deleteOrdersListStatus0 
	* @Author: 王瑞清
	* @Date:日期：2016年3月31日  时间：上午11:06:57
	* @Description: 按用户删除预下单数据
	* @param customerId
	* @throws DaoException
	* @return void
	* @Version 1.0.0
	*/ 
	public void deleteOrdersListStatus0(Integer customerId) throws DaoException;
	/** 
	* @Title: deleteOrdersListStatus0 
	* @Author: 王瑞清
	* @Date:日期：2016年3月31日  时间：上午11:06:57
	* @Description: 按用户删除预下单数据
	* @param customerId
	* @throws DaoException
	* @return void
	* @Version 1.0.0
	*/ 
	public Integer deleteOrdersListUnPay(Integer ordersId) throws DaoException;
	/**
	 * 
	* @Title: getGoodsInfoOfReturnGoods 
	* @Description: 获取 退换货商品信 息
	* @param orderId
	* @param goodsId
	* @param goodsNormsValueId
	* @return
	* @throws DaoException
	* @return Map<String,Object>
	* @throws
	 */
	public Map<String, Object> getGoodsInfoOfReturnGoods(Integer orderId,Integer goodsId,Integer goodsNormsValueId) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 
	  * @param 
	  * @throws 
	  * @return Integer
	  * @date 2016年5月26日
	  */ 
	public Integer updateOrderSumMoneyById(Map<String, Object> paramMap) throws DaoException;

	public BigDecimal orderLogistcsCost(List asList) throws DaoException;
	
	/**
	 * 
	* @Title: updateStatusByTsh 
	* @Author: 田超
	* @Date:日期：2016年6月16日  时间：上午9:31:03
	* @Description: 更新状态
	* @param paramMap
	* @return
	* @throws DaoException
	* @return Integer
	* @Version 1.0.0
	 */
	public Integer updateStatusByTsh(Map<String, Object> paramMap) throws DaoException;
	 /**
	 * @Package com.sayimo.school.mall.module.order.dao
	 * @Author 龚益君
	 * @MethodName:getProviderOrderList
	 * @Description:获取供应商订单列表
	 * @param paramMap
	 * @return
	 * @throws DaoException
	 * @Date 2016年7月14日,下午4:38:39
	 */
	public List<Object> getProviderOrderList(Integer providerId,Integer status,Integer pageSize,Integer pageNow) throws DaoException;
	 /**
	 * @Package com.sayimo.school.mall.module.order.dao
	 * @Author 龚益君
	 * @MethodName:getEmsNameById
	 * @Description:通过id查找emsName
	 * @param emsId
	 * @return
	 * @throws DaoException
	 * @Date 2016年7月14日,下午5:20:24
	 */
	public String getEmsNameById(Integer emsId) throws DaoException;

	/** 
	* @Title: queryOrdersNormsInfoById 
	* @Description: 
	* @param orderId
	* @return
	* @return List
	* @throws 
	*/ 
	public List queryOrdersNormsInfoById(Integer orderId)throws DaoException;

	/** 
	* @Title: updateOrdersById 
	* @Description: 
	* @param paramMap
	* @return
	* @return Object
	* @throws 
	*/ 
	public Object updateOrdersById(Map<String, Object> paramMap)throws DaoException;
	 /**
	 * @Package com.sayimo.school.mall.module.order.dao
	 * @Author 龚益君
	 * @MethodName:getNewTimestamp
	 * @Description:获取最新时间戳
	 * @param providerId
	 * @param status
	 * @return
	 * @throws DaoException
	 * @Date 2016年7月20日,上午10:09:02
	 */
	public List<Object> getNewTimestamp(Integer providerId,Integer status)throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.order.dao
	 * @Author TANXIN
	 * @MethodName:getActivityBuyNumCountByCustomerId
	 * @Description:获取会员钢化膜活动购买总数
	 * @param customerId
	 * @return
	 * @throws DaoException
	 * @Date 2016年9月14日,上午11:04:04
	 */
	public  Map<String, Object> getActivityBuyNumCountByCustomerId(Integer customerId) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 判断订单是否已支付
	  * @param ordersNo 订单号
	  * @throws 
	  * @return Integer
	  * @date 2016年9月26日
	  */ 
	public Integer getPaidOrder(String ordersNo) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 根据订单号获取订单信息
	  * @param 
	  * @throws 
	  * @return OrdersList
	  * @date 2016年9月26日
	  */ 
	public OrdersList getOrdersListByOrdersNo(String ordersNo) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 根据订单号查询同批次的所有订单
	  * @param 
	  * @throws 
	  * @return List
	  * @date 2016年9月27日
	  */ 
	public List getOrdersIdsByBatchCode(String ordersNo) throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.order.dao
	 * @Author TANXIN
	 * @MethodName:getCustomerSeckillGoodsBuy
	 * @Description:获取会员当天在该活动的当前时间段购买商品总数
	 * @param customerId
	 * @param identifier
	 * @param startDate
	 * @param endDate
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月18日,上午10:30:56
	 */
	public Integer getCustomerSeckillGoodsBuy(Integer customerId,String identifier,Integer seckillTimesId) throws DaoException;
    /**
     * @Package com.sayimo.school.mall.module.order.dao
     * @Author TANXIN
     * @MethodName:getCustomerGoodsBuyByOrder
     * @Description:查询会员购买了该活动商品数量
     * @param customerId
     * @param goodsId
     * @param identifier
     * @param limitType
     * @return
     * @throws DaoException
     * @Date 2016年10月18日,上午10:53:26
     */
    public Integer getCustomerGoodsBuyByOrder(Integer customerId,Integer goodsId,String identifier,Integer limitType) throws DaoException;

	/** 
	* @Title: getCustomerGroupGoodsBuy 
	* @Description: 获取会员在该团购活动的当前时间段购买商品总数
	* @param customerId
	* @param identifier
	* @return
	* @return Integer
	* @throws 
	*/ 
	public Integer getCustomerGroupGoodsBuy(Integer customerId,
			String identifier)throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.order.dao
	 * @Author TANXIN
	 * @MethodName:getCustomerCutPriceGoodsBuy
	 * @Description:获取会员在该砍价活动购买商品总数
	 * @param customerId
	 * @param identifier
	 * @return
	 * @throws DaoException
	 * @Date 2016年10月21日,下午2:59:08
	 */
	public Integer getCustomerCutPriceGoodsBuy(Integer customerId,String identifier) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 查询订单下指定商品待审核退换货数量
	  * @param 
	  * @throws 
	  * @return Integer
	  * @date 2016年10月26日
	  */ 
	public Integer getReturnGoodsNumInOrder(Map<String, Integer> paramMap ) throws DaoException;

	/** 
	* @Title: queryOrderIdsByidentifier 
	* @Description: 
	* @param identifier
	* @return
	* @return String
	* @throws 
	*/ 
	public String queryOrderIdsByidentifier(String identifier)throws DaoException;

	 /**
	 * @Package com.sayimo.maker.mall.orders.dao
	 * @Author 龚益君
	 * @MethodName:getOrderListByCustomerId
	 * @Description:
	 * @param refId
	 * @param status
	 * @param pageSize
	 * @param pageNow
	 * @return
	 * @throws DaoException
	 * @Date 2017年3月2日,下午5:41:10
	 */
	public List getOrderListByProviderId(Integer refId, Integer status,Integer mallType, Integer pageSize, Integer pageNow)
			throws DaoException;
	/**
	 * 
	 * @MethodName queryIsOrder
	 * @Description 根据支付宝异步返回的订单号和总金额查询是否存在订单 
	 * @author wangyang
	 * @date 2017年3月2日 上午9:21:56
	 * @param 
	 * @return Integer
	 * @throws Exception 
	 */
	public Integer queryIsOrder(String out_trade_no, String total_amount)throws DaoException;


}
